/**
 * 
 */
package qy.qyalgotrader.mystrategy;

import java.time.LocalDateTime;
import java.time.ZonedDateTime;
import java.util.List;
import java.util.Map;
import java.util.Optional;

import org.apache.commons.lang3.tuple.Pair;

import com.google.common.collect.Table;

import qy.jalgotrade.bar.Bar.Frequency;

/**
 * @author qy
 *
 */
public interface Inspectable {

	/**
	 * 
	 * @return
	 */
	List<String> getAllIndicators();

	/**
	 * 
	 * @param dm
	 * @return
	 */
	boolean isInTrading(ZonedDateTime dm);

	/**
	 * 
	 * @param  frequency
	 * @param  instruments windcode
	 * @param  indicators  使用 "." 分隔 indicator-name 和 indicator-item
	 * @return &lt;instrument, datetime&gt;, &lt;instrument, indicatorName, indicatorVal&gt;
	 */
	Pair<Map<String, LocalDateTime>, Table<String, String, Double>> checkNow(Frequency frequency, Optional<List<String>> instruments,
                                                                             Optional<List<String>> indicators);
}
